串口之COMMTIMEOUTS结构体详解 您所在的位置:网站首页 c++ 串口收发 串口之COMMTIMEOUTS结构体详解

串口之COMMTIMEOUTS结构体详解

2024-07-06 14:43| 来源: 网络整理| 查看: 265

COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下: 

typedef struct _COMMTIMEOUTS {  DWORD ReadIntervalTimeout;  DWORD ReadTotalTimeoutMultiplier;  DWORD ReadTotalTimeoutConstant;  DWORD WriteTotalTimeoutMultiplier;  DWORD WriteTotalTimeoutConstant;  } COMMTIMEOUTS,*LPCOMMTIMEOUTS; 

ReadIntervalTimeout:两字符之间最大的延时,当读取串口数据时,一旦两个字符传输的时间差超过该时间,读取函数将返回现有的数据。设置为0表示该参数不起作用。 指定通讯线上两个字符到达的最大时延,以毫秒为单位。在ReadFile操作期间,时间周期从第一个字符接收到算起。如果收到的两个字符之间的间隔超过该值,ReadFile操作完毕并返回所有缓冲数据。如果ReadIntervalTimeout为0,则该值不起作用。

如果值为MAXDWORD,   并且ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier两个值都为0,   则指定读操作携带已经收到的字符立即返回,即使没有收到任何字符。

ReadTotalTimeoutMultiplier:读取每字符间的超时。  指定以毫秒为单位的累积值。用于计算读操作时的超时总数。对于每次读操作,该值与所要读的字节数相乘。

ReadTotalTimeoutConstant:一次读取串口数据的固定超时。所以在一次读取串口的操作中,其超时为 ReadTotalTimeoutMultiplier乘以读取的字节数再加上 ReadTotalTimeoutConstant。将ReadIntervalTimeout设置为MAXDWORD,并将 ReadTotalTimeoutMultiplier 和ReadTotalTimeoutConstant设置为0,表示读取操作将立即返回存放在输入缓冲区的字符。 

WriteTotalTimeoutMultiplier:写入每字符间的超时。 

WriteTotalTimeoutConstant:一次写入串口数据的固定超时。所以在一次写入串口的操作中,其超时为WriteTotalTimeoutMultiplier乘以写入的字节数再加上 WriteTotalTimeoutConstant。  ****************************************************************************************************************** 一般都会做以下设置:  TimeOuts.ReadIntervalTimeout=MAXDWORD; // 把间隔超时设为最大,把总超时设为0将导致ReadFile立即返回并完成操作  TimeOuts.ReadTotalTimeoutMultiplier=0; //读时间系数  TimeOuts.ReadTotalTimeoutConstant=0; //读时间常量  TimeOuts.WriteTotalTimeoutMultiplier=50; //总超时=时间系数*要求读/写的字符数+时间常量  TimeOuts.WriteTotalTimeoutConstant=2000; //设置写超时以指定WriteComm成员函数中的

  COMMTIMEOUTS   comTimeOut;//   COMMTIMEOUTS对象     comTimeOut.ReadIntervalTimeout   =   3;//   接收时,两字符间最大的时延 

comTimeOut.ReadTotalTimeoutMultiplier   =   3;//   读取每字节的超时 

//   读串口数据的固定超时  //   总超时   =   ReadTotalTimeoutMultiplier   *   字节数   +   ReadTotalTimeoutConstant  comTimeOut.ReadTotalTimeoutConstant   =   2;

comTimeOut.WriteTotalTimeoutMultiplier   =   3;//   写每字节的超时 

comTimeOut.WriteTotalTimeoutConstant   =   2;//   写串口数据的固定超时 

SetCommTimeouts(handlePort_,&comTimeOut); //   将超时参数写入设备控制 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有